package com.tbit.uqbike.service.business;

import com.tbit.uqbike.object.pojo.ProhibitArea;
import com.tbit.uqbike.object.pojo.statistics.ExportProhibitArea;
import com.tbit.uqbike.object.value.LoginInfo;
import com.tbit.common.entity.view.Result;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @Author: chen
 * @Description: 禁停区域
 * @Date: 创建于 11:56 2020/3/31
 */
public interface ProhibitAreaService {
    /**
     * 分页查询
     */
    List<ProhibitArea> queryPage(Integer accountId, String name, Integer pageNO, Integer rowCount);

    /**
     * 总数
     */
    Integer queryCount(Integer accountId, String name);

    /**
     * 添加
     */
    public void insert(ProhibitArea prohibitArea);

    /**
     * 修改
     */
    public void edit(ProhibitArea prohibitArea);

    /**
     * 删除
     */
    public void del(Integer prohibitAreaId);

    /**
     * 获取所有
     */
    List<ProhibitArea> getAll(Integer accountId);

    /**
     * 获取所有
     */
    List<ProhibitArea> getByArea(Integer accountId, Double lo, Double la, Integer radius);

    /**
     * 批量导入（禁停区导入）
     *
     * @param file      文件
     * @param accountId 运营区域id
     * @param mapType   地图类型
     */
    void batchImport(MultipartFile file, Integer accountId, LoginInfo loginInfo, Integer mapType);

    /**
     * 批量新增
     *
     * @param prohibitAreaList 禁停区集合
     */
    void batchInsert(List<ProhibitArea> prohibitAreaList);

    /**
     * 获取批量修改禁停区模板
     *
     * @param accountId 区域id
     * @param type      0:空模板，1：带禁停区数据
     * @param mapType   地图类型 0:原始 1:高德
     */
    Result<Object> getBatchUpdateProhibitAreaTemplate(Integer accountId, Integer type, Integer mapType);

    /**
     * 根据excel批量修改禁停区
     *
     * @param file      站点导出的excel文件
     * @param accountId 区域id
     * @param mapType   地图类型 0:原始 2:高德
     */
    Result<String> batchUpdateProhibitArea(MultipartFile file, Integer accountId, Integer mapType);

    /**
     * 根据accountId和精确名称查询禁停区
     *
     * @param accountId        区域id
     * @param prohibitAreaName 禁停区名称
     */
    ProhibitArea getByProhibitAreaName(Integer accountId, String prohibitAreaName);

    /**
     * 根据accountId和模糊名称查询禁停区
     *
     * @param accountId        区域id
     * @param prohibitAreaName 禁停区名称
     */
    List<ExportProhibitArea> selectByProhibitAreaName(Integer accountId, String prohibitAreaName);
}
